﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace GamePriceCrawler
{
    class Program
    {
        static void Main(string[] args)
        {
            Kabum objKabum = new Kabum();
            objKabum.URI_COLLECT_DATA = "http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=930&pagina=1&string=";
            List<Jogo> ls = objKabum.GetList();
            ls.ForEach(delegate(Jogo obj) {
                Console.WriteLine(obj.Nme_Jogo + " - " + obj.Des_Preco + " - " + obj.Des_Preco_Desconto);
            });
            Console.WriteLine("FIM");
            Console.ReadLine();
        }
    }

    public class Jogo
    {
        public string Nme_Jogo { get; set; }
        public decimal Des_Preco { get; set; }
        public decimal Des_Preco_Desconto { get; set; }
        public int Idf_Plataforma { get; set; }
        public bool Flg_Frete_Gratis { get; set; }
        public string Des_Uri { get; set; }
        public string Des_Imagem_Uri { get; set; }
    }

    public class Util
    {
        public static string getString(string Uri)
        {
            System.Net.WebClient wc = new System.Net.WebClient();
            string s = wc.DownloadString(Uri);
            wc.Dispose();
            return s;
        }
    }

    public class Walmart
    {
        /*
         * JOGOS
         * XBOX 360
         * http://www.walmart.com.br/categoria/games/jogos-para-xbox-360/?fq=C:401/409/411/&O=OrderByPriceASC&PS=3203
         * 
         */

    }

    public class Submarino
    { }

    public class Kabum
    {
        /* 
         * JOGOS
         * 
         * XBOX360
         * http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=930&pagina=1&string=
         * PSP
         * http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=1566&pagina=1&string=
         * PS3
         * http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=797&pagina=1&string=
         * 3DS
         * http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=1433&pagina=1&string=
         * Wii
         * http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=810&pagina=1&string=
         * PC
         * http://www.kabum.com.br/cgi-local/kabum3/site/listagem.cgi?ordem=3&limite=9999&dep=02&sec=26&cat=796&sub=850&pagina=1&string=
         * Página que retorna jogos XBOX 360, Limite de 9999 por página, ordenado por menor preço.
         */

        public string URI_COLLECT_DATA { get; set; }

        public List<Jogo> GetList()
        {
            List<Jogo> ls = new List<Jogo>();
            
            MatchCollection mCollection = Regex.Matches(Util.getString(this.URI_COLLECT_DATA) , 
                "<table border=\"0\" width=\"95%\" cellspacing=\"0\" cellpadding=\"0\" id=\"table6\">(.|\n)*?</table>");

            foreach (Match m in mCollection)
            {
                Jogo objJogo = new Jogo();

                MatchCollection mInside = Regex.Matches(m.Value, "<tr>(.|\n)*?</tr>");

                objJogo.Nme_Jogo = Regex.Replace(mInside[1].Value, "<(.|\n)*?>", "").Replace("\t", "").Replace("\n", "").Replace("Game", "").TrimStart(new char[] { ' ' }).TrimEnd(new char[] { ' ' });
                objJogo.Flg_Frete_Gratis = ((mInside[0].Value.IndexOf("frete_gratis") >= 0) ? true : false);
                objJogo.Des_Preco = decimal.Parse(Regex.Match(mInside[0].Value, "R[\"$\"](.|\n)*?[0-9]{1,4},[0-9]{1,4}").Value.Replace("R$ ",""));
                objJogo.Des_Preco_Desconto = decimal.Parse(Regex.Match(mInside[3].Value, "R[\"$\"](.|\n)*?[0-9]{1,4},[0-9]{1,4}").Value.Replace("R$ ",""));
                objJogo.Des_Uri = Regex.Match(mInside[4].Value, @"((http:?):((//)www|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)").Value;
                objJogo.Des_Imagem_Uri = Regex.Match(mInside[0].Value, @"((http:?):((//)static|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*).jpg").Value;

                ls.Add(objJogo);
            }

            return ls;
        }
            

        #region Template
        /*
           	<table border="0" width="95%" cellspacing="0" cellpadding="0" id="table6">
     * Preço normal e Frete Grátis
      		<tr>
      			<td width="11" height="71" rowspan="4" valign="top">
      			<p align="center">
      			<b><font face="Arial" style="font-size: 8pt" color="#808080">4</font></b></p>
      			</td>
      			<td width="110" height="71" rowspan="4" align="left">
      			<p>
      			<a target="_top" href="http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:26:796:26219&tag=">
      			<img border="0" src="http://static.kabum.com.br/kabum/imagem/fotos/01_02_26_796_26219_index_p.jpg" width="90" height="90"></a></td>
      			<td width="496" colspan="3" height="15%">
      			<img height="16" src="http://static.kabum.com.br/kabum3/imagem/frete_gratis/2.gif" width="197" border="0"></td>
      			<td width="10" height="15%">&nbsp;</td>
      			<td width="134" rowspan="2" height="21%"><b>
      			<font face="Arial" style="font-size: 15pt" color="#0463A3">R$ 38,90</font></b></td>
      		</tr>
     * 2 Nome
      		<tr>
      			<td width="496" colspan="3" height="15"><sub><b>
      			<font face="Arial" color="#808080"> Game Crackdown Classics Xbox 360</font></b></sub></td>
      			<td width="10" height="15"></td>
      		</tr>
      		<tr>
      			<td width="496" colspan="3" valign="top" height="40" rowspan="2">
      			<font face="Arial" style="font-size: 9pt" color="#808080">Crackdown foi desenvolvido pelo reconhecido desenvolvedor do game GTA (Grand Theft Auto), Dave Jones e é um game imerso ..</font></td>
      			<td width="10" valign="top" height="40" rowspan="2">&nbsp;</td>
      			<td width="134" height="23%" valign="bottom">
      			<img border="0" src="http://static.kabum.com.br/kabum3/imagem/listagem/list_texto-15.gif"></td>
      		</tr>
     * 3 Preço desconto
      		<tr>
      			<td width="134" height="24" valign="top"><b>
      			<font face="Arial" color="#FF0000">R$ 33,06</font></b></td>
      		</tr>
     * 4 Link
      		<tr>
      			<td width="11" height="46%" rowspan="2">
      			&nbsp;</td>
      			<td width="110" height="46%" rowspan="2">
      			&nbsp;</td>
      			<td width="414" colspan="2">
      			<img border="0" src="http://static.kabum.com.br/kabum3/imagem/listagem/list_icone-disponivel.png" width="155" height="22"></td>
      			<td width="97" valign="bottom">
      			<a target="_top" href="http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:26:796:26219&tag=">
      			<img border="0" src="http://static.kabum.com.br/kabum3/imagem/kb_mini-detalhes.gif" width="90" height="22"></a></td>
      			<td width="10">&nbsp;</td>
      			<td width="134" height="31%" valign="bottom">
      			<img border="0" src="http://static.kabum.com.br/kabum3/imagem/listagem/list_texto-12x.gif" width="85" height="11"></td>
      		</tr>
      		<tr>
      			<td width="123">
      			<img border="0" src="http://static.kabum.com.br/kabum3/imagem/estrelas/estrela_5.gif" width="92" height="16" align="left"></td>
      			<td width="270"></td>
      			<td width="97"><a target="_top" href="http://www.kabum.com.br/cgi-local/kabum3/carrinho/adicionar.cgi?id_produto=01:02:26:796:26219">			<img border="0" src="http://static.kabum.com.br/kabum3/imagem/kb_mini-comprar.gif" width="90" height="22"></a></td>
      			<td width="10">&nbsp;</td>
      			<td width="137" height="16%" valign="top"><b>
      			<font face="Arial" style="font-size: 12pt" color="#9D9D9D">12x R$ 3,24</font></b></td>
      		</tr>
      		<tr>
      			<td width="11" height="46%">
      			<p align="right">&nbsp;</p>
      			</td>
      			<td width="110" height="46%">&nbsp;</td>
      			<td width="123" height="46%">
      			<p align="center"><font face="Arial" style="font-size: 8pt">(19 avaliações)</font></p>
      			</td>
      			<td width="270" height="46%">&nbsp;</td>
      			<td width="96" height="46%">&nbsp;</td>
      			<td width="10" height="46%">&nbsp;</td>
      			<td width="136" height="46%">&nbsp;</td>
      		</tr>
      		<tr>
      			<td width="758" colspan="7" background="http://static.kabum.com.br/kabum3/imagem/kb_linha-pontilhada.gif" align="left" style="background-image: url('http://static.kabum.com.br/kabum3/imagem/kb_linha-pontilhada.gif'); background-repeat: repeat-x; background-position: center">&nbsp;</td>
      		</tr>
      	</table>
     */
        #endregion
    }

    public class BalaoDaInformatica
    { }

}
